#ifndef MATRIX_H_
#define MATRIX_H_

/**
 * Template para guardar dados numa matriz dinamica.
 */
template<class T>
class Matriz {
private:
	int cap;
	T** m;
public:
	Matriz();
	~Matriz();

	void inserir(const int& x, const int& y, const T& elem);
	int& busca(const int& x, const int& y);
};

template<class T>
Matriz<T>::Matriz() {
	cap = 50;
	m = new T*[cap];
	for (int i = 0; i < cap; i++) {
		m[i] = new T[cap];
	}
}

template<class T>
Matriz<T>::~Matriz() {
	for (int i = 0; i < cap; i++) {
		delete[] m[i];
	}
	delete[] m;
}

template<class T>
void Matriz<T>::inserir(const int& x, const int& y, const T& elem) {
	m[x][y] = elem;
}

template<class T>
int& Matriz<T>::busca(const int& x, const int& y) {
	return m[x][y];
}

#endif /* MATRIX_H_ */
